package it.ap.sa.core.audit.config;

import org.audit4j.core.MetaData;

import it.ap.sa.core.configuration.service.ConfigurationService;
import it.ap.sa.core.utils.AuthUtils;
import it.ap.sa.core.utils.costants.ConfigurationConstants;

/**
 * Se si utilizzano le annotations per inserire record di controllo, una classe di meta-dati personalizzata può essere implementata. 
 * Audit4j non riceverà alcune informazioni utilizzando le annotazioni (i.e .: informazioni riguardanti l'utente collegato e l'origine). 
 * In un tale scenario, Audit4j aggiungerà alcuni dati fittizi nel vostro record di controllo. 
 * Questo può essere effettuato facilmente implementando la classe org.audit4j.core.MetaData.
 * 
 * @author marianna
 */
public class AuditMetaData implements MetaData {

	private static final long serialVersionUID = 7243065407615627372L;

	@Override
	public String getOrigin() {
		try {
			/** Get codice applicazione **/
			return ConfigurationService.getConfig().getString(ConfigurationConstants.CODE_APP.name());
		} catch (Exception e) {
			e.printStackTrace();
		}
		/** Stringa di default da usare quando non viene identificato il codice applicazione. **/
		return "unidentified";
	}

	@Override
	public String getActor() {
		/** Get username utente autenticato **/
		return AuthUtils.getLoggedUsername();
	}
}